package com.nexgo.payment.ui;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.nexgo.payment.util.UIUtils;

/**
 * 继承Fragment
 * @author 谭忠扬-YuriTam
 * @time 2016年10月13日
 */
public abstract class BaseFragment extends Fragment {

    protected Context mContext;
    private MyDownTimer mDownTimer;
    private DownTimerListener mTimerListener;

    @Override
    public void onAttach(Context mContext) {
        super.onAttach(mContext);
        this.mContext = mContext;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return initView(inflater, container);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initEvent();
        initData();
    }

    @Override
    public void onPause() {
        //隐藏软盘
        UIUtils.hideSoftKeyboard(getActivity());
        super.onPause();
    }

    /**
     * 初始化UI
     * @author 谭忠扬-YuriTam
     * @time 2016年10月13日
     * @param inflater
     * @param container
     * @return
     */
    protected abstract View initView(LayoutInflater inflater,ViewGroup container);

    /**
     * 初始化事件
     * @author 谭忠扬-YuriTam
     * @time 2016年10月13日
     */
    protected abstract void initEvent();

    /**
     * 初始化数据
     * @author 谭忠扬-YuriTam
     * @time 2016年10月13日
     */
    protected abstract void initData();

    /**
     * 跳转到其它页面
     * @author 谭忠扬-YuriTam
     * @date 2017年5月8日
     * @param tarActivity
     */
    protected void intent2Activity(Class<? extends Activity> tarActivity) {
        Intent intent = new Intent(mContext, tarActivity);
        mContext.startActivity(intent);
    }

    /**
     * 跳转到其它页面-带参数
     * @author 谭忠扬-YuriTam
     * @date 2017年5月8日
     * @param tarActivity
     * @param mBundle
     */
    protected void intent2Activity(Class<? extends Activity> tarActivity, Bundle mBundle) {
        Intent intent = new Intent(mContext, tarActivity);
        intent.putExtras(mBundle);
        mContext.startActivity(intent);
    }

    /**
     * 开始倒计时
     * @param timeOut 倒计时时间
     * @param timerListener 倒计时回调
     */
    public void setDownTimer(long timeOut,DownTimerListener timerListener){
        mTimerListener = timerListener;
        if (mDownTimer == null){
            mDownTimer = new MyDownTimer((timeOut + 1) * 1000);
        }else {
            mDownTimer.cancel();
        }
        mDownTimer.start();
    }

    /**
     * 重新计时
     */
    public void restartDownTimer(){
        if (mDownTimer != null){
            mDownTimer.cancel();
            mDownTimer.start();
        }
    }

    /**
     * 取消倒计时
     */
    public void cancelDownTimer(){
        if (mDownTimer != null) mDownTimer.cancel();
    }

    /**
     * 倒计时器
     */
    class MyDownTimer extends CountDownTimer {

        public MyDownTimer(long millisInFuture){
            super(millisInFuture,1000);
        }

        @Override
        public void onTick(long millisUntilFinished) {
            if (mTimerListener != null){
                mTimerListener.onTick(millisUntilFinished/1000);
            }
        }

        @Override
        public void onFinish() {
            if (mTimerListener != null){
                mTimerListener.onFinish();
            }
        }
    }

    /**
     * 倒计时回调接口，回调时间单位为秒
     */
    public interface DownTimerListener{

        void onTick(long secondsUntilFinished);

        void onFinish();
    }
}
